package map;

import java.util.HashMap;
import java.util.Map;

/**
 * java.util.Map 查找表
 * Map体现的结构是一个多行两列的表格，其中左列成为key，右列成为value.
 * Map总是以键值对(key-value对)的形式保存元素。并且总是根据key获取
 * 对应的value。
 * Map有一个要求，就是key不允许重复(equals比较)
 *
 * 常用实现类:
 * java.util.HashMap:散列表，使用散列算法实现的Map，当今查询速度最快
 * 的数据结构。
 *
 */
public class MapDemo1 {
    public static void main(String[] args) {
        Map<String,Integer> map = new HashMap<>();
        /*
            V put(K k,V v)
            将给定的一组键值对存入到Map当中。
            由于Map要求key不允许重复，因此若使用重复的key存入value
            时为替换value操作，此时方法返回的为被替换的value。否则是null
         */
        Integer value = map.put("语文",99);
        System.out.println(value);
        map.put("数学",98);
        map.put("英语",97);
        map.put("物理",96);
        map.put("化学",95);
        map.put("生物",99);
        System.out.println(map);
        //替换英语对应的值
        value = map.put("英语",55);
        System.out.println(map);
        System.out.println(value);

        /*
            V get(Object key)
            根据给定的key获取对应的value。如果给定的key在Map中不存在
            则返回值为null
         */
        value = map.get("生物");
        System.out.println("生物:"+value);
        value = map.get("体育");
        System.out.println("体育:"+value);
        /*
            返回当前Map的元素个数，一组键值对算一个元素
         */
        int size = map.size();
        System.out.println("size:"+size);

        /*
            V remove(Object key)
            删除给定的key对应的键值对。返回值为这个key对应的value。
         */
        value = map.remove("数学");
        System.out.println(map);
        System.out.println(value);

        /*
            boolean containsKey(Object key)
            判断当前Map是否包含给定的key

            boolean containsValue(Object value)
            判断当前Map是否包含给定的value
         */
        boolean ck = map.containsKey("语文");
        boolean cv = map.containsValue(55);
        System.out.println("包含key:"+ck);
        System.out.println("包含value:"+cv);


    }
}








